﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Server.Service
{
    /// <summary>
    /// 파일을 전송하기 위한 서비스를 제공합니다.
    /// </summary>
    public class FileDownload : IService
    {
        /// <summary>
        /// 요청받은 메시지의 본문
        /// </summary>
        CCL.SocketMessage.Request.FileDownload m_body;

        /// <summary>
        /// 새로운 서비스를 생성합니다.
        /// </summary>
        /// <param name="body">요청받은 메시지 본문</param>
        public FileDownload(CCL.SocketMessage.Request.FileDownload body)
        {
            m_body = body;
        }

        /// <summary>
        /// 서비스를 시작합니다.
        /// </summary>
        /// <returns>전송할 byte배열</returns>
        public byte[] Execute()
        {
            CCL.SocketMessage.Response.FileDownload ft = null;
            CCL.SocketMessage.Message msg = null;

            try
            {
                Network.FDQManager.FDQ ftq = Network.FDQManager.GetFDQ(m_body.PoolID);
                Network.ManagedFile file = ftq.PopFilePath();

                ft = new CCL.SocketMessage.Response.FileDownload("Project\\" + file.FilePath, file.Revision);
                msg = CCL.SocketMessage.Message.MessageResponseBuilder(ft);
            }
            catch (System.Exception ex)
            {
                ft = new CCL.SocketMessage.Response.FileDownload(ex.Message);
                msg = CCL.SocketMessage.Message.MessageResponseBuilder(ft);
            }

            return msg.GetByte();
        }
    }
}
